package com.dhcc.DRGsHosp.application.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.inject.Named;

import org.dayatang.querychannel.JdbcTemplateObj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.transaction.annotation.Transactional;

import com.dhcc.DRGsHosp.application.MrqDictWeightApplication;
import com.dhcc.DRGsHosp.core.domain.MrqDictWeight;
import com.dhcc.DRGsHosp.infra.util.GlobalData;

/**
 * 每类得分权重字典表---ABCD分数 的数据访问层--实体类   
 * @Date: 2018年7月27日 上午9:58:48  
 * @Author QiaoYiLong 
 * @Version 3.1.1 DHC-DRG
 */

@Named("drgsHospMrqDictWeightApplicationImpl20181212")
@Transactional
public class MrqDictWeightApplicationImpl implements MrqDictWeightApplication {

	@Autowired  
	private NamedParameterJdbcTemplate jdbcTempSeverice;
	@Autowired
	private JdbcTemplateObj jdbcTemplateObj;
	/**
	 *  创建一个 每类得分权重字典表
	 *  @Author QiaoYiLong
	 *  @Date:2018年7月27日上午10:00:18
	 */
	@Override
	public void createMrqDictWeight(MrqDictWeight mrqDictWeight) {
		mrqDictWeight.save();
	}
	/**
	 *  修改一个 每类得分权重字典表
	 *  @Author QiaoYiLong
	 *  @Date:2018年7月27日上午10:00:25
	 */
	@Override
	public void updateMrqDictWeight(MrqDictWeight mrqDictWeight) {
		mrqDictWeight.save();
	}
	/**
	 *  删除一个 每类得分权重字典表
	 *  @Author QiaoYiLong
	 *  @Date:2018年7月27日上午10:01:14
	 */
	@Override
	public void removeMrqDictWeight(MrqDictWeight mrqDictWeight) {
		if( mrqDictWeight != null ){
			mrqDictWeight.remove();
		}
	}
	/**
	 *  删除多个 每类得分权重字典表
	 *  @Author QiaoYiLong 
	 *  @Date:2018年7月27日上午10:01:31
	 */
	@Override
	public void removeMrqDictWeights(Set<MrqDictWeight> mrqDictWeights) {
		for( MrqDictWeight mrqDictWeight : mrqDictWeights ){
			if( mrqDictWeight != null ){
				mrqDictWeight.remove();
			}
		}
	}
	/**
	 *  取得所有的 每类得分权重字典表信息
	 *  @Author QiaoYiLong
	 *  @Date:2018年7月27日上午10:01:48
	 */
	@Override
	public List<MrqDictWeight> findAllMrqDictWeight() {
		return MrqDictWeight.findAll(MrqDictWeight.class);
	}
	/**
	 *  功能描述： 取得MRQ_DICT_SCORE表的所有大类和MRQ_DICT_WEIGHT表的小类信息,包括分类，类名和分数
	 *  @param hospName 医院名称
	 *  @return Map数据格式为  大类编码 SCORE_CODE:BASICINFO,大类名称 SCORE_NAME:'患者基本信息',大类分数 SCORE_SCORE:18.0
	 *  大类里面的分类编码 WEIGHT_CODE:A,分类名称 WEIGHT_NAME:A类,分类分数 WEIGHT_SCORE:8.0,分类保底分数(分类的最低得分不能小于这个分数) MIN_SCORE:2.0
	 *  @Date:2018年12月26日下午4:21:02
	 */
	@Override
	public List<Map<String, Object>> getAllMrqDictWeight(String hospName){
		List<Map<String, Object>> list =  new ArrayList<Map<String, Object>>();
		StringBuilder sql = new StringBuilder();
		sql.append(" select distinct w.score_code,w.weight_code,w.weight_name,w.weight_score,w.min_score,s.score_score,s.score_name,s.score_sort \n ");
		sql.append(" from drgs.mrq_dict_score  s  \n ");
		sql.append(" left join drgs.MRQ_DICT_WEIGHT w on s.score_code = w.score_code  \n ");
		sql.append(" WHERE 1=1 and instr('"+hospName+"',s.hosp_name)>0 \n ");
		sql.append(" order by s.score_sort,w.score_code,w.weight_code  \n ");

		Map<String,Object> paramMap = new HashMap<String,Object>();
		list = jdbcTempSeverice.queryForList(sql.toString(), paramMap);	
		return list;
	}
	/**
	 *  功能描述： 取得配置了质控规则的医院名称
	 *  @Date:2018年12月27日下午8:21:02
	 */
	@Override	
	public String getHospName() {
		String hospName = "东华";
		if(null != GlobalData.hospName && !"".equals(GlobalData.hospName)){
			StringBuilder sql = new StringBuilder();
			sql.append(" select count(1) from drgs.mrq_dict_score w where w.hosp_name = '"+GlobalData.hospName+"' \n ");
			String count = jdbcTemplateObj.queryForObject(sql.toString(), String.class);
			if(Integer.parseInt(count)>0){
				hospName = GlobalData.hospName ;
			}
		}		
		return hospName;
	}
}
